package org.example.lease.model.enums;

import com.baomidou.mybatisplus.annotation.EnumValue;
import com.fasterxml.jackson.annotation.JsonValue;

/**
 * @author 宋孟林
 * @description 公寓状态枚举类
 * HttpMessageConverter组件是SpringMVC中的一个组件，负责将前端转递的json参数转换为java对象，或者将返回给前端的返回值
 * 转换为前端需要的json参数，这个组件依赖于json和java对象的序列化的实现，默认使用jackson
 * @date: 2025/5/12 16:55
 */
public enum AppointmentStatus implements BaseEnum {

    WAITING(1, "待看房"),

    CANCELED(2, "已取消"),

    VIEWED(3, "已看房");

    /**
     * 注解@EnumValue也就是说这个注解先放在枚举类中的字段上，在我们的实体类中使用这个枚举对象，
     * 持久化实体的时候，在数据库中持久化的字段是这个加上了注解的字段
     * 也就是说保存ItemType就是在保存字段code，实际上这是MP提供的TypeHandler来处理的，默认行为是将枚举对象转换为枚举对象的name属性
     * 通过注解@EnumValue就能更改策略保存实体或者使用实体来比较等行为的时候都会转换为加了注解的这个字段
     * 1@EnumValue注解只能标注在枚举中的字段上
     * 注解@JsonValue
     * 加上这个注解之后，前端和后端相互序列化实体对象的时候就只会序列化加了注解的这个字段
     */
    @EnumValue
    @JsonValue
    private Integer code;
    private String name;
    AppointmentStatus(Integer code, String name) {
        this.code = code;
        this.name = name;
    }
    @Override
    public Integer getCode() {
        return this.code;
    }

    @Override
    public String getName() {
        return this.name;
    }
}
